<script>
    //  创建迁移对齐点

                /*
                        一、问题描述

                                        ef core 迁移记录文件夹  Migrations文件被删除了，切无法从回收站恢复，

                                        在这整情况下如何在不删除当前数据库、保留已有数据的前提下继续进行迁移呢？
                */

               /*
                        二、解决方案

                                            在EF Core中，当前Migrations 文件夹被彻底删除但数据库仍然存在，且需要保留数据时，还想继续创建迁移，

                                            核心思路是 "创建新的记录起点(保持模型与数据库结构一致)，重建迁移记录。"

                               1、前提条件

                                        ①、确保当前项目的 "实体模型"(Entity Class) 与现有数据库结构一致(表、字段、关系、约束等必须匹配)，否则后续迁移会造成冲突
                                        
                                        ②、备份数据库 (建议备份，防止操作失误)


                               2、具体操作步骤

                                        <1>、清除数据库中残留的迁移历史记录 (可选但推荐)

                                                    EF Core 通过数据库中的  __EFMigrationsHistory 表跟踪已应用的迁移。

                                                    如果原迁移记录仍存在，新建迁移时刻能会冲突，建议先清理。

                                                    ★、直接操作数据库：  删除 __EFMigrationsHistory 表中的所有记录（此表仅记录迁移历史，不影响业务数据）

                                        
                                        <2>、创建 "基准迁移" (关键步骤)

                                                    ①、需要创建一个 "空的初始迁移" ，用以匹配当前的数据库状态。 (告诉 EF Core "当前数据库就是这个迁移的结果")：

                                                        eg： 

                                                                dotnet ef migrations add Initial_ExistingBb

                                                    ②、生成迁移文件后，手动清空 "Up()" 和 "Down()" 方法（关键！因为数据库结构已存在，不需要执行任何 Schema 操作）

                                                        eg:
                                                        
                                                                public partial class Initial_ExistingDb : Migration
                                                                {
                                                                    protected override void Up(MigrationBuilder migrationBuilder)
                                                                    {
                                                                        // 清空此方法，不执行任何操作
                                                                    }

                                                                    protected override void Down(MigrationBuilder migrationBuilder)
                                                                    {
                                                                        // 清空此方法，不执行任何回滚操作
                                                                    }
                                                                }

                                        <3>、应用新的"基准迁移"，同步迁移历史

                                                    执行以下命令，将新创建的空迁移记录到__EFMigrationsHistory表中：

                                                               dotnet ef database update Initial_ExistingDb

                                                    此时，EF Core 会认为 “当前数据库状态与Initial_ExistingDb迁移一致”，后续迁移将基于此基准。

                                        <4>、验证并开始新的迁移

                                                    完成后，即可像往常一样添加新的迁移：

                                                    新迁移会基于当前数据库结构生成差异，不会影响已有数据。
               */

              /*
                    三、注意事项

                            1、模型与数据库一致性：如果实体模型与数据库结构不一致（例如模型多了字段、少了表），
                            
                                    执行Add-Migration会生成错误的 Schema 操作，导致Update-Database时破坏数据。
                                    
                                    务必先确保模型与数据库完全匹配（可通过对比表结构、使用Script-Migration预览 SQL 等方式验证）。

                            2、反向工程（可选）：如果不确定模型是否与数据库一致，可通过 EF Core 的反向工程从现有数据库生成模型：

                                    eg：

                                            Scaffold-DbContext "你的数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

                                    生成后替换现有模型，确保一致性。
              */
</script>